package cn.tedu.qxhouserent.house.service;

import cn.tedu.qxhouserent.commons.pojo.vo.PageData;
import cn.tedu.qxhouserent.house.pojo.entity.House;
import cn.tedu.qxhouserent.house.pojo.param.*;
import cn.tedu.qxhouserent.house.pojo.vo.*;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Transactional
public interface HouseService {
    String RECOM_TEXT[] = {"不推荐", "推荐"};

    void addLeaseHouse(LeaseHouseAddNewParam leaseHouseAddNewParam);

    void addNewHouse(NewHouseAddNewParam newHouseAddNewParam);

    void addSecondHandHouse(SecondHandHouseAddNewParam secondHandHouseAddNewParam);

    void deleteLeaseHouseById(Long id);

    void deleteNewHouseById(Long id);

    void deleteSecondHandHouseById(Long id);

    void updateLeaseHouseById(Long id, LeaseHouseUpdateInfoParam leaseHouseUpdateInfoParam);

    void updateNewHouseById(Long id, NewHouseUpdateInfoParam newHouseUpdateInfoParam);

    void updateSecondHandHouseById(Long id, SecondHandHouseUpdateInfoParam secondHandHouseUpdateInfoParam);

    void setRecom(Long id);

    void setNotRecom(Long id);

    PageData<HouseListItemVO> list(Integer pageNum);

    PageData<HouseListItemVO> list(Integer pageNum, Integer pageSize);

    HouseStandardVO getStandardById(Long id);

    PageData<LeaseHouseListItemVO> listLeaseHouse(Integer pageNum);

    PageData<LeaseHouseListItemVO> listLeaseHouse(Integer pageNum,Integer pageSize);

    LeaseHouseStandardVO getStandardLeaseHouse(Long id);

    PageData<NewHouseListItemVO> listNewHouse(Integer pageNum);

    PageData<NewHouseListItemVO> listNewHouse(Integer pageNum,Integer pageSize);

    NewHouseStandardVO getStandardNewHouse(Long id);

    PageData<SecondHandHouseListItemVO> listSecondHandHouse(Integer pageNum);

    PageData<SecondHandHouseListItemVO> listSecondHandHouse(Integer pageNum,Integer pageSize);

    SecondHandHouseStandardVO getStandardSecondHandHouse(Long id);

    List<RecomHouseListItemVO> listRecom();

    List<HouseListItemVO> cha(String name, Long hcid);

    PageData<HouseListItemVO> chaxiang(HouseSelectParam houseSelectParam,Integer page);

    //二手推荐列表
    List<RecomHouseListItemVO> ershoulistRecom();

    //买推荐列表
    List<RecomHouseListItemVO> mailistRecom();


}
